﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DomainDriver.DomainModeling.DomainModels;
using DomainDriver.DomainModeling.Repositories;
using AutomotivePricingModel.BodyStyles;
using AutomotivePricingModel.Brands;
using AutomotivePricingModel.Companies;
using AutomotivePricingModel.Countries;
using AutomotivePricingModel.Dealers;
using AutomotivePricingModel.DriveTrainTypes;
using AutomotivePricingModel.ProductionModels;
using AutomotivePricingModel.TransmissionTypes;
using AutomotivePricingModel.Vehicles;

namespace AutomotivePricingModel
{
    public static class AutomotivePricingDomainModelExtensions
    {
        #region Domain Object Repositories

        public static IRepository<BodyStyleEnum, BodyStyle> BodyStyles(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<BodyStyleEnum, BodyStyle>();
        }

        public static IRepository<Guid, Brand> Brands(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<Guid, Brand>();
        }

        public static IRepository<Guid, Company> Companies(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<Guid, Company>();
        }

        public static IRepository<Guid, Country> Countries(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<Guid, Country>();
        }

        public static IRepository<Guid, Dealer> Dealers(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<Guid, Dealer>();
        }

        public static IRepository<DriveTrainTypeEnum, DriveTrainType> DriveTrainTypes(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<DriveTrainTypeEnum, DriveTrainType>();
        }

        public static IRepository<Guid, ProductionModel> ProductionModels(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<Guid, ProductionModel>();
        }

        public static IRepository<TransmissionTypeEnum, TransmissionType> TransmissionTypes(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<TransmissionTypeEnum, TransmissionType>();
        }

        public static IRepository<Guid, Vehicle> Vehicles(this IDomainModel domainModel)
        {
            return domainModel.GetRepository<Guid, Vehicle>();
        }

        #endregion
    }
}